home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 41
/
Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso
/
Aminet
/
util
/
cli
/
ALeXcompare.lha
/
cmp
/
update2.rexx
< prev
Wrap
OS/2 REXX Batch file
|
2000-11-18
|
4KB
|
138 lines
/*
** Update only all neccesary files from dir A -> dir B
** ©1999/2000 ALeX Kazik
*/
/* Usage as FTP/WWW-Updater: (turn on makeftp)
**
** dst shoud be an image of your ftp-tree (initial: empty)
** src is the directory, you should make changes
**
** every call will send/delete all created/changed/removed files/dirs on the
** ftp-server and in the dst-directory.
**
** at least just call "ftp -iv www.homepage.net <T:script"
** (the call will change, if you're using anothther ftp-clients)
*/
/* IMPORTANT: the src/dst dir MUST end with a colon or slash and MUST NOT be empty! */
/* SOURCE directory */
src = 'a/'
/* DESTINATION directory */
dst = 'b/'
/* generate as CLI or FTP-Script */
makeftp = 0
/* use UNIX cp/rm/mkdir commands instead of copy/delete/makedir */
unixcmd = 0
/* the script to create */
script = 'T:script'
/* SKIP the first N bytes */
skip = 0
/* temporary file */
tmpfile = 'T:update.tmp'
/*
** The main-program
*/
ADDRESS COMMAND
IF makeftp = 1 THEN
ftpsign = '!'
ELSE
ftpsign = ''
cmp 'A="' || src || '" B="' || dst || '" all nostat norc skipfirstnbytes=' || skip || ' newdir=10 newfile revbdir detail lformat %r%R%n >"' || tmpfile || '"'
IF RC >= 20 THEN DO
SAY 'Error while executing cmp'
EXIT RC
END
CALL OPEN(tmp, tmpfile, 'read')
CALL OPEN(scr, script, 'write')
eq = 0
DO UNTIL EOF(tmp)
act = READCH(tmp, 1)
file = READLN(tmp)
IF act = '' THEN
break
ELSE IF act = 'Q' THEN
eq = eq + 1
ELSE IF (act = 'A') | (act = '5') | (act = '9') THEN DO
say 'File to remove: ' || file
IF makeftp=1 THEN
CALL WRITELN(scr, 'del "' || file || '"')
IF unixcmd=1 THEN
CALL WRITELN(scr, ftpsign || 'rm "' || dst || file || '"')
ELSE
CALL WRITELN(scr, ftpsign || 'delete "' || dst || file || '"')
END
ELSE IF (act = '4') | (act = '8') THEN DO
say 'Dir to remove: ' || file
IF makeftp=1 THEN
CALL WRITELN(scr, 'rmdir "' || file || '"')
IF unixcmd=1 THEN
CALL WRITELN(scr, ftpsign || 'rmdir "' || dst || file || '"')
ELSE
CALL WRITELN(scr, ftpsign || 'delete "' || dst || file || '"')
END
ELSE IF (act = 'B') | (act = '3') | (act = '7') THEN DO
say 'New File: ' || file
IF makeftp=1 THEN
CALL WRITELN(scr, 'put "' || src || file || '" "' || file || '"')
IF unixcmd=1 THEN
CALL WRITELN(scr, ftpsign || 'cp "' || src || file || '" "' || dst || file || '"')
ELSE
CALL WRITELN(scr, ftpsign || 'copy "' || src || file || '" "' || dst || file || '"')
END
ELSE IF (act = '2') | (act = '6') THEN DO
say 'New Dir: ' || file
IF makeftp=1 THEN
CALL WRITELN(scr, 'mkdir "' || file || '"')
IF unixcmd=1 THEN
CALL WRITELN(scr, ftpsign || 'mkdir "' || dst || file || '"')
ELSE
CALL WRITELN(scr, ftpsign || 'makedir "' || dst || file || '"')
END
ELSE IF (act = 'E') | (act = '0') | (act = '1') THEN DO
say 'Error/Warning at dir/file: ' || file
exit 20
END
ELSE IF (act = 'L') | (act = 'C') | (act = 'D') | (act = 'S') | (act = 'T') THEN DO
say 'File to Update: ' || file
IF makeftp=1 THEN
CALL WRITELN(scr, 'put "' || src || file || '" "' || file || '"')
IF unixcmd=1 THEN
CALL WRITELN(scr, ftpsign || 'cp "' || src || file || '" "' || dst || file || '"')
ELSE
CALL WRITELN(scr, ftpsign || 'copy "' || src || file || '" "' || dst || file || '"')
END
ELSE DO
SAY 'Unknown Symbol >' || act || '<'
CALL close(tmp)
CALL close(scr)
EXIT 20
END
END
SAY eq || ' Equal files.'
IF makeftp=1 THEN
CALL WRITELN(scr, 'by')
CALL CLOSE(tmp)
CALL CLOSE(scr)
/*
** That's all.
*/